/** * llmindex.io — model profile: per-domain scores, sub-metrics, run history * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * License: Proprietary — © Simon-Pierre Boucher, all rights reserved */ import Link from 'next/link'; import { notFound } from 'next/navigation'; import { DemoBanner, ScoreBar, ScoreValue, formatMs, formatUsd } from '@llmindex/ui'; import { ProviderLogo } from '@/components/ProviderLogo'; import { getModelDuels, getModelProfile, getModelResponses } from '@/lib/data'; export const revalidate = 3600; export const dynamicParams = true; export function generateStaticParams(): Array<{ slug: string[] }> { return []; } export default async function ModelPage({ params }: { params: { slug: string[] } }) { const slug = params.slug.map(decodeURIComponent).join('/'); const profile = await getModelProfile(slug); if (!profile) notFound(); const [responses, duels] = await Promise.all([getModelResponses(slug), getModelDuels(slug)]); const responseDomains = Object.keys(responses).sort(); return (
{profile.slug} · {profile.provider} · context{' '} {profile.contextLength?.toLocaleString() ?? '—'} · in{' '} {formatUsd(profile.promptPricePerM)}/1M · out {formatUsd(profile.completionPricePerM)}/1M
95% CI [{profile.global.scoreLow}–{profile.global.scoreHigh}] · index v {profile.run.indexVersion}
| Domain | Score (95% CI) | Accuracy (IRT) | Consistency | Calibration | Contam. Δ | p50 | $/1k | |
|---|---|---|---|---|---|---|---|---|
| {d.domain.replaceAll('_', ' ')} |
|
|
{d.subMetrics?.accuracy_irt?.toFixed(3) ?? '—'} | {d.subMetrics?.consistency?.toFixed(2) ?? '—'} | {d.subMetrics?.calibration?.toFixed(2) ?? '—'} | {d.subMetrics?.contamination_delta?.toFixed(3) ?? '—'} | {formatMs(d.subMetrics?.latency_p50)} | {formatUsd(d.subMetrics?.cost_per_1k_items)} |
Full transparency: the model's latest graded answer on every instantiated item of the current index version. Answer keys never leave the server; anchor-item prompts are withheld to protect the longitudinal subset.
{responseDomains.map((domain) => { const rows = responses[domain]!; const nCorrect = rows.filter((r) => r.correct === true).length; return (
{r.prompt}
{r.answer ?? '(none extracted)'}
Pairwise duels (writing, safety, SVG logo design) rated by a cross-provider judge panel with recorded position swaps.
{d.myResponseExcerpt}
)}